// 表单类型配置
export const FILL_FORM_TYPE_CONFIG = {
  'YHS': { value: 'yhs', desc: '一户式' },
  'ADD': { value: 'add', desc: '新增' },
  'EDIT': { value: 'edit', desc: '修改' },
  'VIEW': { value: 'view', desc: '查看' },
  'ATTY': { value: 'atty', desc: '律所' },
  'ACCT': { value: 'acct', desc: '会所' },
  'STANDBY': { value: 'standby', desc: '备选项目' },
  'FINANCE': { value: 'finance', desc: '财评报告' },
}

// 一户式类型常量与表单ID配置
const env = import.meta.env.MODE
/**
 * 不同环境的一户式表单配置
 * 
 * ad34 - 安徽
 * ad35 - 附件
 * default - 默认
 * 
 * SP - 专项项目一户式
 * GE - 一般项目一户式
 * ST - 备选项目一户式
 * BG - 项目变更一户式
 * AT - 会计事务所一户式
 * FD - 律师事务所一户式
 * EXP - 专家评审一户式
 * 
 */
const envYhsFormCode = {
  "ad34": {
    "SP": 'special_reserve_form_yhs_anhui',
    'ST': 'standby_project_filling_form_yhs',
    "EXP": 'zjps_form_yhs_anhui'
  },
  "ad35": {
    "SP": 'special_supply_form_yhs',
    'GE': 'generic_supply_form_yhs',
    "EXP": 'zjps_form_yhs'
  },
  "default": {
    "SP": 'proj_yhs_form_zxxm',
    "GE": 'proj_yhs_form_ybxm',
    'BG': 'proj_yhs_form_xmbg',
    'ST': 'proj_yhs_form_bxxm',
    'AT': 'fin_legal_report_upload_form',
    'FD': 'fin_legal_report_upload_form',
    "EXP": 'proj_yhs_form_zjps',
  },
}


/**
 * 获取一户式表单编码
 * 
 * @param {String} type 表单类型
 * @returns {String} 表单编码
 */
const getYhsFormCode = (type) => {
  let envFormCode = envYhsFormCode[env]
  let defFormCode = envYhsFormCode['default']
  return envFormCode[type] || defFormCode[type]
}

/**
 * 一户式配置类
 */
export class YHS_CONFIG {
  constructor(type, name, bondTypeCode) {
    this.type = type
    this.name = name || ''
    this.formCode = getYhsFormCode[type]
    this.formType = 'yhs'
    this.bondTypeCode = bondTypeCode || ''
  }
  static get SP() {
    return new YHS_CONFIG('SP', '专项', '2')
  }
  static get GE() {
    return new YHS_CONFIG('GE', '专项', '1')
  }
  static get ST() {
    return new YHS_CONFIG('ST', '备选', '2')
  }
  static get BG() {
    return new YHS_CONFIG('BG', '变更', '2')
  }
  static get AT() {
    return new YHS_CONFIG('AT', '会所', '2')
  }
  static get FD() {
    return new YHS_CONFIG('FD', '律所', '2')
  }
  static get EXP() {
    return new YHS_CONFIG('EXP', '专家评分', '2')
  }
}

// 一户式表单配置
export const YHS_PROJ_FORM_CONFIG = {
  // 专项
  'SP': {
    value: 'SP',
    formCode: envYhsFormCode[env]?.SP || envYhsFormCode['default']?.SP,
    formType: FILL_FORM_TYPE_CONFIG.YHS.value,
    bondTypeCode:'2'
  },
  // 一般
  'GE': {
    value: 'GE',
    formCode: envYhsFormCode[env]?.GE || envYhsFormCode['default']?.GE,
    formType: FILL_FORM_TYPE_CONFIG.YHS.value,
    bondTypeCode:'1'
  },
  // 备选
  'ST': {
    value: 'ST',
    formCode: envYhsFormCode[env]?.ST || envYhsFormCode['default']?.ST,
    formType: FILL_FORM_TYPE_CONFIG.YHS.value
  },
  // 专项
  'BG': {
    value: 'BG',
    formCode: envYhsFormCode[env]?.BG || envYhsFormCode['default']?.BG,
    formType: FILL_FORM_TYPE_CONFIG.YHS.value,
    bondTypeCode:'2'
  },
  // 律师事务所
  'AT': {
    value: 'AT',
    formCode: envYhsFormCode[env]?.AT || envYhsFormCode['default']?.AT,
    formType: FILL_FORM_TYPE_CONFIG.YHS.value
  },
  // 财评报告
  'FD': {
    value: 'FD',
    formCode: envYhsFormCode[env]?.FD || envYhsFormCode['default']?.FD,
    formType: FILL_FORM_TYPE_CONFIG.YHS.value
  },
  // 专家评分
  'EXP': {
    value: 'EXP',
    formCode: envYhsFormCode[env]?.EXP || envYhsFormCode['default']?.EXP,
    formType: FILL_FORM_TYPE_CONFIG.YHS.value
  },
  // 专家评分
  'TEST': {
    value: 'TEST',
    formCode: 'case_form_xmyhs',
    formType: 'yhs'
  },
}

// 获取填报表单类型
export const getFillFormTypeArray = () => {
  let FillFormTypeArray = []
  Object.keys(FILL_FORM_TYPE_CONFIG).forEach(key => {
    FillFormTypeArray.push(FILL_FORM_TYPE_CONFIG[key].value)
  })
  return FillFormTypeArray
}
